home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / unixSyscall / RCS / gethostname.c,v < prev    next >
Text File  |  1992-06-16  |  4KB  |  212 lines

  1. head     1.5;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.5
  10. date     92.06.16.11.20.59;  author jhh;  state Exp;
  11. branches ;
  12. next     1.4;
  13.  
  14. 1.4
  15. date     89.10.16.14.34.26;  author douglis;  state Exp;
  16. branches ;
  17. next     1.3;
  18.  
  19. 1.3
  20. date     89.09.12.11.49.48;  author jhh;  state Exp;
  21. branches ;
  22. next     1.2;
  23.  
  24. 1.2
  25. date     88.06.30.17.28.47;  author ouster;  state Exp;
  26. branches ;
  27. next     1.1;
  28.  
  29. 1.1
  30. date     88.06.19.14.31.24;  author ouster;  state Exp;
  31. branches ;
  32. next     ;
  33.  
  34.  
  35. desc
  36. @@
  37.  
  38.  
  39. 1.5
  40. log
  41. @now uses system call to get host name
  42. @
  43. text
  44. @/* 
  45.  * gethostname.c --
  46.  *
  47.  *    Procedure to simulate Unix gethostname system call.
  48.  *
  49.  * Copyright 1986 Regents of the University of California
  50.  * All rights reserved.
  51.  */
  52.  
  53. #ifndef lint
  54. static char rcsid[] = "$Header: /sprite/src/lib/c/unixSyscall/RCS/gethostname.c,v 1.4 89/10/16 14:34:26 douglis Exp Locker: jhh $ SPRITE (Berkeley)";
  55. #endif not lint
  56.  
  57. #include <host.h>
  58. #include <string.h>
  59. #include <sys.h>
  60. #include <sys/param.h>
  61. #include <status.h>
  62. #include "compatInt.h"
  63.  
  64.  
  65. /*
  66.  *----------------------------------------------------------------------
  67.  *
  68.  * gethostname --
  69.  *
  70.  *    Puts the host name into the the given buffer.
  71.  *
  72.  * Results:
  73.  *    0 is returned if the call was completed successfully.
  74.  *    Otherwise, -1 is returned and errno gives more information.
  75.  *
  76.  * Side effects:
  77.  *    The name buffer is modified.
  78.  *
  79.  *----------------------------------------------------------------------
  80.  */
  81.  
  82. int
  83. gethostname(name, nameLen)
  84.     char *name;        /* Place to store name. */
  85.     int nameLen;    /* Length of name buffer. */
  86. {
  87.     char        tmp[MAXHOSTNAMELEN];
  88.     ReturnStatus     status;
  89.  
  90.     Host_Entry *entry;
  91.     int localID;
  92.     /*
  93.      * Try using the new system call. If that doesn't work then do it
  94.      * the old way. Strip out the old way once all kernels have the
  95.      * system call -- jhh
  96.      */
  97.  
  98.     status = Sys_GetHostName(tmp);
  99.     if (status == SYS_INVALID_SYSTEM_CALL) {
  100.     status = Proc_GetHostIDs(&localID, (int *) NULL);
  101.     if (status != SUCCESS) {
  102.         errno = Compat_MapCode(status);
  103.         return UNIX_ERROR;
  104.     }
  105.  
  106.     entry = Host_ByID(localID);
  107.     if (entry == (Host_Entry *) NULL) {
  108.         Host_End();
  109.         return UNIX_ERROR;
  110.     }
  111.     strncpy(name, entry->name, nameLen-1);
  112.     name[nameLen-1] = 0;
  113.     Host_End();
  114.     } else if (status != SUCCESS) {
  115.     errno = Compat_MapCode(status);
  116.     return UNIX_ERROR;
  117.     } else {
  118.     strncpy(name, tmp, nameLen);
  119.     }
  120.     return 0;
  121. }
  122. @
  123.  
  124.  
  125. 1.4
  126. log
  127. @return virtual host (home node) rather than physical
  128. @
  129. text
  130. @d11 1
  131. a11 1
  132. static char rcsid[] = "$Header: /sprite/src/lib/c/unixSyscall/RCS/gethostname.c,v 1.3 89/09/12 11:49:48 jhh Exp Locker: douglis $ SPRITE (Berkeley)";
  133. d17 2
  134. d44 3
  135. a47 1
  136.     ReturnStatus status;
  137. d49 5
  138. d55 7
  139. a61 5
  140.     status = Proc_GetHostIDs(&localID, (int *) NULL);
  141.     if (status != SUCCESS) {
  142.     errno = Compat_MapCode(status);
  143.     return UNIX_ERROR;
  144.     }
  145. d63 7
  146. a69 2
  147.     entry = Host_ByID(localID);
  148.     if (entry == (Host_Entry *) NULL) {
  149. d71 2
  150. d74 2
  151. a76 3
  152.     strncpy(name, entry->name, nameLen-1);
  153.     name[nameLen-1] = 0;
  154.     Host_End();
  155. @
  156.  
  157.  
  158. 1.3
  159. log
  160. @uses Proc_GetHostIDs
  161. @
  162. text
  163. @d11 1
  164. a11 1
  165. static char rcsid[] = "$Header: /sprite/src/lib/c/unixSyscall/RCS/gethostname.c,v 1.2 88/06/30 17:28:47 ouster Exp Locker: jhh $ SPRITE (Berkeley)";
  166. d46 1
  167. a46 1
  168.     status = Proc_GetHostIDs((int *) NULL, &localID);
  169. @
  170.  
  171.  
  172. 1.2
  173. log
  174. @Update to use new Host_ package.
  175. @
  176. text
  177. @d11 1
  178. a11 1
  179. static char rcsid[] = "$Header: gethostname.c,v 1.1 88/06/19 14:31:24 ouster Exp $ SPRITE (Berkeley)";
  180. d46 1
  181. a46 1
  182.     status = Sys_GetMachineInfo((int *) NULL, (int *) NULL, &localID);
  183. @
  184.  
  185.  
  186. 1.1
  187. log
  188. @Initial revision
  189. @
  190. text
  191. @d11 1
  192. a11 1
  193. static char rcsid[] = "$Header: gethostname.c,v 1.2 87/08/06 13:30:36 andrew Exp $ SPRITE (Berkeley)";
  194. d14 3
  195. a16 2
  196. #include <errno.h>
  197. #include "sprite.h"
  198. a17 1
  199. #include "sys.h"
  200. d28 2
  201. a29 2
  202.  *    UNIX_SUCCESS if the call returned SUCCESS
  203.  *    UNIX_ERROR, errno=EINVAL if the call failed.
  204. d42 19
  205. a60 5
  206.     if (Sys_GetHostName(nameLen, name) != SUCCESS) {
  207.     errno = EINVAL;
  208.     return(UNIX_ERROR);
  209.     } 
  210.     return(UNIX_SUCCESS);
  211. @
  212.